/*
 * Proyecto Manejador de Proyectos
 * @Autor Hector Hurtado
 */
package Mproyectos.conversores;

import Mproyectos.controladores.ControlProyectoCRUD;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import Mproyectos.entidades.Proyecto;

/**
 * Convertir para la clase Proyecto
 */
@FacesConverter("conversorProyecto")
public class ConversorProyecto implements Converter {

    /**
     * Devuelve el Proyecto como objeto cuando se envia el nombre en texto
     *
     * @param context
     * @param component
     * @param value
     * @return Proyecto que en la base de datos tiene ese nombre
     */
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        // Cargar el controlador de Proyecto 
        ControlProyectoCRUD controlador = (ControlProyectoCRUD) context.getApplication().getELResolver().
                getValue(context.getELContext(), null, "controlProyectoCRUD");

        // Obtener el Proyecto y buscarlo

        Proyecto co = controlador.getFachadaProyecto().getProyecto(value);
        return co;
    }

    /**
     * Retorna el nobre del Proyecto si el objeto enviado es un Proyecto, si
     * no devuelve la cadena desconocido
     *
     * @param context
     * @param component
     * @param value
     * @return El valor del Proyecto
     */
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        // Verifica si es del tipo Proyecto y le saca el nombre 
        if (value instanceof Proyecto) {
            Proyecto proyecto = (Proyecto) value;
            return proyecto.getTitulo();
        }

        return "Desconocido";
    }
}
